//
//  HPHomeViewController.swift
//  MyWeibo
//
//  Created by apple on 16/4/6.
//  Copyright © 2016年 Apengpeng. All rights reserved.
//

import UIKit
import SVProgressHUD

// cell 重用标示符
private let homePageCellID = "homePageCellID"
class HPHomeViewController: HPVisitorViewController {
    
    // 懒加载ViewModel
    private lazy var statusesViewModel: HPStatusesViewModel = HPStatusesViewModel()
    
    // 为了在load 中调用
    let myRefreshControl = HPRefreshControl()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置UI界面
        upDateUI()
        
        // 加载网络数据
        loadData()
    }
    
    // 更新界面
    private func upDateUI() {
        
        // 判断是否登录
        if !isLogin {
            visitorView?.setVisitorViewInfor(true, imageName: "visitordiscover_feed_image_smallicon", suggestText: "登录微博\n世界发生巨大变化\n登上微信\n生活只有秀恩爱晒结晶")
            return
        }
            navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "navigationbar_pop", target: self, action: "pushNextVc")
            navigationItem.leftBarButtonItem = UIBarButtonItem(imageName: "navigationbar_friendsearch", target: self, action: "pushNextVc")
        
        // 设置footView 的底部小菊花
        tableView.tableFooterView = indicatorView

        myRefreshControl.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
        // 添加到界面
        tableView.addSubview(myRefreshControl)
        
        prepareTableView()
    }
    
    // 导航栏按钮的监听
    @objc private func pushNextVc() {
        let vc = HPTestViewController()
        print("pushNextVc")
        navigationController?.pushViewController(vc, animated: true)
    }
    
    // 准备tableView
    private func prepareTableView() {
        
        // 获取重用cell前需要注册
        tableView.registerClass(HPHomePageCell.self, forCellReuseIdentifier: homePageCellID)
        // 设置cell的高度
        // 取消分隔项
        tableView.separatorStyle = .None
        
        // 设置预估行高
        tableView.estimatedRowHeight = 300.0
        
        // 设置自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        
    }
    
    // 赖加载小菊花视图
    private lazy var indicatorView: UIActivityIndicatorView = {
       
        let v = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
        return v
    }()
}



// 加载网络数据
extension HPHomeViewController {

   @objc private func loadData() {
        
        // 调用加载数据的方法
        statusesViewModel.loadDataWithHomePage(indicatorView.isAnimating()) { (isSuccess) -> () in
            
            // 网络请求完毕 停止刷新, 停止菊花的转动,  闭包中使用self 调用
            self.myRefreshControl.endRefreshing()
            
            if !isSuccess {
                SVProgressHUD.showErrorWithStatus("返回数据错误")
                return
            }
            // 已经加载完数据, 让菊花停止转动
            self.indicatorView.stopAnimating()
            
            // 刷新列表
            self.tableView.reloadData()
        }
    }
}


//MARK: 设置数据方法
extension HPHomeViewController {
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statusesViewModel.statusCellVM.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // 获取重用的cell
        let cell = tableView.dequeueReusableCellWithIdentifier(homePageCellID, forIndexPath: indexPath) as! HPHomePageCell
//        cell.textLabel?.text = statuses[indexPath.row].text
//        cell.textLabel?.text = statusesViewModel.statuses[indexPath.row].user?.name
        cell.statusCellVM = statusesViewModel.statusCellVM[indexPath.row]
        
        // 添加一个标记, 说明正在加载最后一个cell
        if !indicatorView.isAnimating() && indexPath.row == statusesViewModel.statusCellVM.count - 1 {// 开始的起点不同,
            
            // 表示正在加载最后一个cell
            // 先加载数据
            loadData()
            // 再转动菊花
            indicatorView.startAnimating()
        }
        return cell
    }
}